home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume24 / rcs / part11 < prev    next >
Encoding:
Internet Message Format  |  1991-03-05  |  54.5 KB

  1. Subject:  v24i011:  RCS source control system, Part11/12
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4. X-Checksum-Snefru: 81d70358 332833e3 6de9a4de 150fc7c3
  5.  
  6. Submitted-by: Adam Hammer <hammer@cs.purdue.edu>
  7. Posting-number: Volume 24, Issue 11
  8. Archive-name: rcs/part11
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then feed it
  12. # into a shell via "sh file" or similar.  To overwrite existing files,
  13. # type "sh file -c".
  14. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  15. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  16. # Contents:  man/merge.1 man/rcs.1 man/rcsclean.1 man/rcsdiff.1
  17. #   man/rcsfile.5 man/rcsmerge.1 rcs.ms.02 src/conf.heg src/ident.c
  18. #   src/merge.sh src/rcsfreeze.sh src/rcsmap.c
  19. # Wrapped by rsalz@litchi.bbn.com on Thu Feb 21 14:37:11 1991
  20. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  21. echo If this archive is complete, you will see the following message:
  22. echo '          "shar: End of archive 11 (of 12)."'
  23. if test -f 'man/merge.1' -a "${1}" != "-c" ; then 
  24.   echo shar: Will not clobber existing file \"'man/merge.1'\"
  25. else
  26.   echo shar: Extracting \"'man/merge.1'\" \(1637 characters\)
  27.   sed "s/^X//" >'man/merge.1' <<'END_OF_FILE'
  28. X.de Id
  29. X.ds Rv \\$3
  30. X.ds Dt \\$4
  31. X..
  32. X.Id $Id: merge.1,v 5.1 1990/08/29 07:12:59 eggert Exp $
  33. X.TH MERGE 1 \*(Dt GNU
  34. X.SH NAME
  35. Xmerge \- three-way file merge
  36. X.SH SYNOPSIS
  37. X.B merge
  38. X[
  39. X.B \-L
  40. X.I label1
  41. X[
  42. X.B \-L
  43. X.I label3
  44. X] ] [
  45. X.B \-p
  46. X] [
  47. X.B \-q
  48. X]
  49. X.I "file1 file2 file3"
  50. X.SH DESCRIPTION
  51. X.B merge
  52. Xincorporates all changes that lead from
  53. X.I file2
  54. Xto
  55. X.I file3
  56. Xinto
  57. X.IR file1 .
  58. XThe result goes to standard output if
  59. X.B \-p
  60. Xis present, into
  61. X.I file1
  62. Xotherwise.
  63. X.B merge
  64. Xis useful for combining separate changes to an original.  Suppose
  65. X.I file2
  66. Xis the original, and both
  67. X.I file1
  68. Xand
  69. X.I file3
  70. Xare modifications of
  71. X.IR file2 .
  72. XThen
  73. X.B merge
  74. Xcombines both changes.
  75. X.PP
  76. XAn overlap occurs if both
  77. X.I file1
  78. Xand
  79. X.I file3
  80. Xhave changes in a common segment of lines.
  81. X.B merge
  82. Xoutputs a message if overlaps occurred,
  83. Xand includes both alternatives
  84. Xin the result.  The alternatives are delimited as follows:
  85. X.LP
  86. X.RS
  87. X.nf
  88. X.BI <<<<<<< " file1"
  89. X.I "lines in file1"
  90. X.B "======="
  91. X.I "lines in file3"
  92. X.BI >>>>>>> " file3"
  93. X.RE
  94. X.fi
  95. X.LP
  96. XIf there are overlaps, the user should edit the result and delete one of the
  97. Xalternatives.
  98. XIf the
  99. X.BI \-L "\ label1"
  100. Xand
  101. X.BI \-L "\ label3"
  102. Xoptions are given, the labels are output in place of the names
  103. X.I file1
  104. Xand
  105. X.I file3
  106. Xin overlap reports.
  107. XAny overlap message is suppressed if the
  108. X.B \-q
  109. Xoption is given.
  110. X.SH DIAGNOSTICS
  111. XExit status is 0 for no overlaps, 1 for some overlaps, 2 for trouble.
  112. X.SH IDENTIFICATION
  113. XAuthor: Walter F. Tichy.
  114. X.br
  115. XRevision Number: \*(Rv; Release Date: \*(Dt.
  116. X.br
  117. XCopyright \(co 1982, 1988, 1989 by Walter F. Tichy.
  118. X.br
  119. XCopyright \(co 1990 by Paul Eggert.
  120. X.SH SEE ALSO
  121. Xdiff3(1), diff(1), rcsmerge(1), co(1).
  122. END_OF_FILE
  123.   if test 1637 -ne `wc -c <'man/merge.1'`; then
  124.     echo shar: \"'man/merge.1'\" unpacked with wrong size!
  125.   fi
  126.   # end of 'man/merge.1'
  127. fi
  128. if test -f 'man/rcs.1' -a "${1}" != "-c" ; then 
  129.   echo shar: Will not clobber existing file \"'man/rcs.1'\"
  130. else
  131.   echo shar: Extracting \"'man/rcs.1'\" \(7061 characters\)
  132.   sed "s/^X//" >'man/rcs.1' <<'END_OF_FILE'
  133. X.de Id
  134. X.ds Rv \\$3
  135. X.ds Dt \\$4
  136. X..
  137. X.Id $Id: rcs.1,v 5.3 1990/12/04 05:18:34 eggert Exp $
  138. X.ds r \s-1RCS\s0
  139. X.if n .ds - \%--
  140. X.if t .ds - \(em
  141. X.TH RCS 1 \*(Dt GNU
  142. X.SH NAME
  143. Xrcs \- change RCS file attributes
  144. X.SH SYNOPSIS
  145. X.B rcs
  146. X.RI [ " options " ] " file " .\|.\|.
  147. X.SH DESCRIPTION
  148. X.B rcs
  149. Xcreates new \*r files or changes attributes of existing ones.
  150. XAn \*r file contains multiple revisions of text,
  151. Xan access list, a change log,
  152. Xdescriptive text,
  153. Xand some control attributes.
  154. XFor
  155. X.B rcs
  156. Xto work, the caller's login name must be on the access list,
  157. Xexcept if the access list is empty, the caller is the owner of the file
  158. Xor the superuser, or
  159. Xthe
  160. X.B \-i
  161. Xoption is present.
  162. X.PP
  163. XFile names ending in
  164. X.B ,v
  165. Xdenote \*r files; all others denote working files.
  166. XIf a working file is given,
  167. X.B rcs
  168. Xtries to find the corresponding \*r file first in an \*r subdirectory
  169. Xand then in the working file's directory,
  170. Xas explained in
  171. X.BR co (1).
  172. X.SH OPTIONS
  173. X.TP
  174. X.B \-i
  175. XCreate and initialize a new \*r file, but do not deposit any revision.
  176. XIf the \*r file has no path prefix, try to place it
  177. Xfirst into the subdirectory
  178. X.BR ./RCS ,
  179. Xand then into the current directory.
  180. XIf the \*r file
  181. Xalready exists, print an error message.
  182. X.TP
  183. X.BI \-a "logins"
  184. XAppend the login names appearing in the comma-separated list
  185. X.I logins
  186. Xto the access list of the \*r file.
  187. X.TP
  188. X.BI \-A "oldfile"
  189. XAppend the access list of
  190. X.I oldfile
  191. Xto the access list of the \*r file.
  192. X.TP
  193. X.BR \-e [\f2logins\fP]
  194. XErase the login names appearing in the comma-separated list
  195. X.I logins
  196. Xfrom the access list of the \*r file.
  197. XIf
  198. X.I logins
  199. Xis omitted, erase the entire access list.
  200. X.TP
  201. X.BR \-b [\f2rev\fP]
  202. XSet the default branch to
  203. X.IR rev .
  204. XIf
  205. X.I rev
  206. Xis omitted, the default
  207. Xbranch is reset to the (dynamically) highest branch on the trunk.
  208. X.TP
  209. X.BI \-c string
  210. Xsets the comment leader to
  211. X.IR string .
  212. XThe comment leader
  213. Xis printed before every log message line generated by the keyword
  214. X.B $\&Log$
  215. Xduring checkout (see
  216. X.BR co (1)).
  217. XThis is useful for programming
  218. Xlanguages without multi-line comments.
  219. XAn initial
  220. X.B ci ,
  221. Xor an
  222. X.B "rcs\ \-i"
  223. Xwithout
  224. X.BR \-c ,
  225. Xguesses the comment leader from the suffix of the working file.
  226. X.TP
  227. X.BI \-k subst
  228. XSet the default keyword substitution to
  229. X.IR subst .
  230. XThe effect of keyword substitution is described in
  231. X.BR co (1).
  232. XGiving an explicit
  233. X.B \-k
  234. Xoption to
  235. X.BR co ,
  236. X.BR rcsdiff ,
  237. Xand
  238. X.B rcsmerge
  239. Xoverrides this default.
  240. XBeware
  241. X.BR "rcs\ \-kv",
  242. Xbecause
  243. X.B \-kv
  244. Xis incompatible with
  245. X.BR "co\ \-l".
  246. XUse
  247. X.B "rcs\ \-kkv"
  248. Xto restore the normal default keyword substitution.
  249. X.TP
  250. X.BR \-l [\f2rev\fP]
  251. XLock the revision with number
  252. X.IR rev .
  253. XIf a branch is given, lock the latest revision on that branch.
  254. XIf
  255. X.I rev
  256. Xis omitted, lock the latest revision on the default branch.
  257. XLocking prevents overlapping changes.
  258. XA lock is removed with
  259. X.B ci
  260. Xor
  261. X.B "rcs\ \-u"
  262. X(see below).
  263. X.TP
  264. X.BR \-u [\f2rev\fP]
  265. XUnlock the revision with number
  266. X.IR rev .
  267. XIf a branch is given, unlock the latest revision on that branch.
  268. XIf
  269. X.I rev
  270. Xis omitted, remove the latest lock held by the caller.
  271. XNormally, only the locker of a revision may unlock it.
  272. XSomebody else unlocking a revision breaks the lock.
  273. XThis causes a mail message to be sent to the original locker.
  274. XThe message contains a commentary solicited from the breaker.
  275. XThe commentary is terminated by end-of-file or by a line containing
  276. X.BR \&. "\ by"
  277. Xitself.
  278. X.TP
  279. X.B \-L
  280. XSet locking to
  281. X.IR strict .
  282. XStrict locking means that the owner
  283. Xof an \*r file is not exempt from locking for checkin.
  284. XThis option should be used for files that are shared.
  285. X.TP
  286. X.B \-U
  287. XSet locking to non-strict.  Non-strict locking means that the owner of
  288. Xa file need not lock a revision for checkin.
  289. XThis option should
  290. X.I not
  291. Xbe used for files that are shared.
  292. XWhether default locking is strict is determined by your system administrator,
  293. Xbut it is normally strict.
  294. X.TP
  295. X.B \-n\f2name\fP\f1[\fP:\f2rev\fP\f1]\fP
  296. XAssociate the symbolic name
  297. X.I name
  298. Xwith the branch or
  299. Xrevision
  300. X.IR rev .
  301. XPrint an error message if
  302. X.I name
  303. Xis already associated with
  304. Xanother number.
  305. XIf
  306. X.I rev
  307. Xis omitted, the symbolic name is deleted.
  308. X.TP
  309. X.B \-N\f2name\fP\f1[\fP:\f2rev\fP\f1]\fP
  310. XAct like
  311. X.BR \-n ,
  312. Xexcept override any previous assignment of
  313. X.IR name .
  314. X.TP
  315. X.BI \-o range
  316. Xdeletes (\*(lqoutdates\*(rq) the revisions given by
  317. X.IR range .
  318. XA range consisting of a single revision number means that revision.
  319. XA range consisting of a branch number means the latest revision on that
  320. Xbranch.
  321. XA range of the form
  322. X.IB rev1 \- rev2
  323. Xmeans
  324. Xrevisions
  325. X.I rev1
  326. Xto
  327. X.I rev2
  328. Xon the same branch,
  329. X.BI \- rev
  330. Xmeans from the beginning of the branch containing
  331. X.I rev
  332. Xup to and including
  333. X.IR rev ,
  334. Xand
  335. X.IB rev \-
  336. Xmeans
  337. Xfrom revision
  338. X.I rev
  339. Xto the end of the branch containing
  340. X.IR rev .
  341. XNone of the outdated revisions may have branches or locks.
  342. X.TP
  343. X.B \-q
  344. XRun quietly; do not print diagnostics.
  345. X.TP
  346. X.B \-I
  347. XRun interactively, even if the standard input is not a terminal.
  348. X.TP
  349. X.B \-s\f2state\fP\f1[\fP:\f2rev\fP\f1]\fP
  350. XSet the state attribute of the revision
  351. X.I rev
  352. Xto
  353. X.I state .
  354. XIf
  355. X.I rev
  356. Xis a branch number, assume the latest revision on that branch.
  357. XIf
  358. X.I rev
  359. Xis omitted, assume the latest revision on the default branch.
  360. XAny identifier is acceptable for
  361. X.IR state .
  362. XA useful set of states
  363. Xis
  364. X.B Exp
  365. X(for experimental),
  366. X.B Stab
  367. X(for stable), and
  368. X.B Rel
  369. X(for
  370. Xreleased).
  371. XBy default,
  372. X.BR ci (1)
  373. Xsets the state of a revision to
  374. X.BR Exp .
  375. X.TP
  376. X.BR \-t [\f2file\fP]
  377. XWrite descriptive text from the contents of the named
  378. X.I file
  379. Xinto the \*r file, deleting the existing text.
  380. XThe
  381. X.IR file
  382. Xname may not begin with
  383. X.BR \- .
  384. XIf
  385. X.I file
  386. Xis omitted, obtain the text from standard input,
  387. Xterminated by end-of-file or by a line containing
  388. X.BR \&. "\ by"
  389. Xitself.
  390. XPrompt for the text if interaction is possible; see
  391. X.BR \-I .
  392. XWith
  393. X.BR \-i ,
  394. Xdescriptive text is obtained
  395. Xeven if
  396. X.B \-t
  397. Xis not given.
  398. X.TP
  399. X.BI \-t\- string
  400. XWrite descriptive text from the
  401. X.I string
  402. Xinto the \*r file, deleting the existing text.
  403. X.TP
  404. X.BI \-V n
  405. XEmulate \*r version
  406. X.IR n .
  407. XSee
  408. X.BR co (1)
  409. Xfor details.
  410. X.SH COMPATIBILITY
  411. XThe
  412. X.BI \-b rev
  413. Xoption generates an \*r file that cannot be parsed by \*r version 3 or earlier.
  414. X.PP
  415. XThe
  416. X.BI \-k subst
  417. Xoptions (except
  418. X.BR \-kkv )
  419. Xgenerate an \*r file that cannot be parsed by \*r version 4 or earlier.
  420. X.PP
  421. XUse
  422. X.BI "rcs \-V" n
  423. Xto make an \*r file acceptable to \*r version
  424. X.I n
  425. Xby discarding information that would confuse version
  426. X.IR n .
  427. X.SH DIAGNOSTICS
  428. XThe \*r file name and the revisions outdated are written to
  429. Xthe diagnostic output.
  430. XThe exit status is zero if and only if all operations were successful.
  431. X.SH FILES
  432. X.B rcs
  433. Xaccesses files much as
  434. X.BR ci (1)
  435. Xdoes,
  436. Xexcept that it does not need to access the working file or its directory.
  437. X.SH IDENTIFICATION
  438. XAuthor: Walter F. Tichy.
  439. X.br
  440. XRevision Number: \*(Rv; Release Date: \*(Dt.
  441. X.br
  442. XCopyright \(co 1982, 1988, 1989 by Walter F. Tichy.
  443. X.br
  444. XCopyright \(co 1990 by Paul Eggert.
  445. X.SH "SEE ALSO"
  446. Xco(1), ci(1), ident(1), rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1),
  447. Xrcsfile(5)
  448. X.br
  449. XWalter F. Tichy,
  450. X\*r\*-A System for Version Control,
  451. X.I "Software\*-Practice & Experience"
  452. X.BR 15 ,
  453. X7 (July 1985), 637-654.
  454. END_OF_FILE
  455.   if test 7061 -ne `wc -c <'man/rcs.1'`; then
  456.     echo shar: \"'man/rcs.1'\" unpacked with wrong size!
  457.   fi
  458.   # end of 'man/rcs.1'
  459. fi
  460. if test -f 'man/rcsclean.1' -a "${1}" != "-c" ; then 
  461.   echo shar: Will not clobber existing file \"'man/rcsclean.1'\"
  462. else
  463.   echo shar: Extracting \"'man/rcsclean.1'\" \(2172 characters\)
  464.   sed "s/^X//" >'man/rcsclean.1' <<'END_OF_FILE'
  465. X.de Id
  466. X.ds Rv \\$3
  467. X.ds Dt \\$4
  468. X..
  469. X.Id $Id: rcsclean.1,v 1.4 1990/11/02 19:33:11 hammer Exp $
  470. X.ds r \s-1RCS\s0
  471. X.if n .ds - \%--
  472. X.if t .ds - \(em
  473. X.TH RCSCLEAN 1 \*(Dt GNU
  474. X.SH NAME
  475. Xrcsclean \- clean up working files
  476. X.SH SYNOPSIS
  477. X.B rcsclean
  478. X.RI [ "rcsdiff options" ]
  479. X.RI [ file "\ .\|.\|.\ ]"
  480. X.SH DESCRIPTION
  481. X.B rcsclean
  482. Xremoves working files that were checked out and never modified.
  483. XFor each file given, 
  484. X.B rcsclean
  485. Xcompares the working file and a revision in the corresponding
  486. X\*r file. If it finds no difference, it removes the working file, and,
  487. Xif the revision was locked, unlocks the revision.
  488. X.PP
  489. XIf no
  490. X.I file
  491. Xis given, all working files in the current directory are cleaned.
  492. XAny other options are passed along to
  493. X.B rcsdiff
  494. Xfor the comparison.
  495. X.PP
  496. X.B rcsclean
  497. Xis useful for
  498. X.B clean
  499. Xtargets in Makefiles.
  500. XSee also
  501. X.BR rcsdiff (1),
  502. Xwhich prints out the differences,
  503. Xand
  504. X.BR ci (1),
  505. Xwhich
  506. Xnormally asks whether to check in a file
  507. Xif it was not changed.
  508. X.SH EXAMPLES
  509. X.LP
  510. X.RS
  511. X.ft 3
  512. Xrcsclean  *.c  *.h
  513. X.ft
  514. X.RE
  515. X.LP
  516. Xremoves all working files ending in
  517. X.B .c
  518. Xor
  519. X.B .h
  520. Xthat were not changed
  521. Xsince their checkout.
  522. X.RS
  523. X.ft 3
  524. Xrcsclean
  525. X.ft
  526. X.RE
  527. X.LP
  528. Xremoves all working files in the current directory
  529. Xthat were not changed since their checkout.
  530. X.SH DIAGNOSTICS
  531. XThe exit status is 0 if there were no differences in any file under \*r control,
  532. X1 if there were differences, and 2 if there were errors.
  533. X.SH IDENTIFICATION
  534. XAuthor: Walter F. Tichy.
  535. X.br
  536. XRevision Number: \*(Rv; Release Date: \*(Dt.
  537. X.br
  538. XCopyright \(co 1982, 1988, 1989 by Walter F. Tichy.
  539. X.br
  540. XCopyright \(co 1990 by Paul Eggert.
  541. X.SH "SEE ALSO"
  542. Xci(1), co(1), ident(1), rcs(1), rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1),
  543. Xrcsfile(5)
  544. X.br
  545. XWalter F. Tichy,
  546. X\*r\*-A System for Version Control,
  547. X.I "Software\*-Practice & Experience"
  548. X.BR 15 ,
  549. X7 (July 1985), 637-654.
  550. X.SH BUGS
  551. XRCS file names may not be given as arguments.
  552. X.PP
  553. XAny diagnostics generated by
  554. X.B rcsdiff
  555. Xwhen comparing files are discarded.
  556. X.PP
  557. XIf the latest revision is already unlocked,
  558. Xand you have a lock on an earlier revision,
  559. Xthe earlier revision is unlocked.
  560. X.PP
  561. X.B rcsclean
  562. Xis just an optional example shell script, and should not be taken too seriously.
  563. END_OF_FILE
  564.   if test 2172 -ne `wc -c <'man/rcsclean.1'`; then
  565.     echo shar: \"'man/rcsclean.1'\" unpacked with wrong size!
  566.   fi
  567.   # end of 'man/rcsclean.1'
  568. fi
  569. if test -f 'man/rcsdiff.1' -a "${1}" != "-c" ; then 
  570.   echo shar: Will not clobber existing file \"'man/rcsdiff.1'\"
  571. else
  572.   echo shar: Extracting \"'man/rcsdiff.1'\" \(2785 characters\)
  573.   sed "s/^X//" >'man/rcsdiff.1' <<'END_OF_FILE'
  574. X.de Id
  575. X.ds Rv \\$3
  576. X.ds Dt \\$4
  577. X..
  578. X.Id $Id: rcsdiff.1,v 5.2 1990/09/26 15:54:04 hammer Exp $
  579. X.ds r \s-1RCS\s0
  580. X.if n .ds - \%--
  581. X.if t .ds - \(em
  582. X.TH RCSDIFF 1 \*(Dt GNU
  583. X.SH NAME
  584. Xrcsdiff \- compare RCS revisions
  585. X.SH SYNOPSIS
  586. X.B rcsdiff
  587. X[
  588. X.BI \-k subst
  589. X] [
  590. X.B \-q
  591. X] [
  592. X.BI \-r rev1
  593. X[
  594. X.BI \-r rev2
  595. X] ] [
  596. X.BI \-V n
  597. X] [
  598. X.I "diff options"
  599. X]
  600. X.I "file .\|.\|."
  601. X.SH DESCRIPTION
  602. X.B rcsdiff
  603. Xruns
  604. X.BR diff (1)
  605. Xto compare two revisions of each \*r file given.
  606. XA file name ending in
  607. X.B ,v
  608. Xis an \*r file name, otherwise a
  609. Xworking file name.
  610. X.B rcsdiff
  611. Xderives the working file name from the \*r
  612. Xfile name and vice versa, as explained in
  613. X.BR co (1).
  614. XPairs consisting
  615. Xof both an \*r and a working file name may also be specified.
  616. X.PP
  617. XThe option
  618. X.B \-q
  619. Xsuppresses diagnostic output.
  620. XZero, one, or two revisions may be specified with
  621. X.BR \-r .
  622. XThe option
  623. X.BI \-k subst
  624. Xaffects keyword substitution when extracting
  625. Xrevisions, as described in
  626. X.BR co (1);
  627. Xfor example,
  628. X.B "\-kk\ \-r1.1\ \-r1.2"
  629. Xignores differences in keyword values when comparing revisions
  630. X.B 1.1
  631. Xand
  632. X.BR 1.2 .
  633. XTo avoid excess output from locker name substitution,
  634. X.B \-kkvl
  635. Xis assumed if (1) at most one revision option is given,
  636. X(2) no
  637. X.B \-k
  638. Xoption is given, (3)
  639. X.B \-kkv
  640. Xis the default keyword substitution, and
  641. X(4) the working file's mode would be produced by
  642. X.BR "co\ \-l".
  643. XSee
  644. X.BR co (1)
  645. Xfor details
  646. Xabout
  647. X.BR \-V .
  648. XOtherwise, all options of
  649. X.BR diff (1)
  650. Xthat apply to regular files are accepted, with the same meaning as for
  651. X.BR diff .
  652. X.PP
  653. XIf both
  654. X.I rev1
  655. Xand
  656. X.I rev2
  657. Xare omitted,
  658. X.B rcsdiff
  659. Xcompares the latest revision on the
  660. Xdefault branch (by default the trunk)
  661. Xwith the contents of the corresponding working file.  This is useful
  662. Xfor determining what you changed since the last checkin.
  663. X.PP
  664. XIf
  665. X.I rev1
  666. Xis given, but
  667. X.I rev2
  668. Xis omitted,
  669. X.B rcsdiff
  670. Xcompares revision
  671. X.I rev1
  672. Xof the \*r file with
  673. Xthe contents of the corresponding working file.
  674. X.PP
  675. XIf both
  676. X.I rev1
  677. Xand
  678. X.I rev2
  679. Xare given,
  680. X.B rcsdiff
  681. Xcompares revisions
  682. X.I rev1
  683. Xand
  684. X.I rev2
  685. Xof the \*r file.
  686. X.PP
  687. XBoth
  688. X.I rev1
  689. Xand
  690. X.I rev2
  691. Xmay be given numerically or symbolically.
  692. X.SH EXAMPLE
  693. XThe command
  694. X.LP
  695. X.B "        rcsdiff  f.c"
  696. X.LP
  697. Xcompares the latest revision on the default branch of the \*r file
  698. X.B RCS/f.c,v
  699. Xto the contents of the working file
  700. X.BR f.c .
  701. X.SH DIAGNOSTICS
  702. XExit status is 0 for no differences during any comparison,
  703. X1 for some differences, 2 for trouble.
  704. X.SH IDENTIFICATION
  705. XAuthor: Walter F. Tichy.
  706. X.br
  707. XRevision Number: \*(Rv; Release Date: \*(Dt.
  708. X.br
  709. XCopyright \(co 1982, 1988, 1989 by Walter F. Tichy.
  710. X.br
  711. XCopyright \(co 1990 by Paul Eggert.
  712. X.SH "SEE ALSO"
  713. Xci(1), co(1), diff(1), ident(1), rcs(1), rcsintro(1), rcsmerge(1), rlog(1)
  714. X.br
  715. XWalter F. Tichy,
  716. X\*r\*-A System for Version Control,
  717. X.I "Software\*-Practice & Experience"
  718. X.BR 15 ,
  719. X7 (July 1985), 637-654.
  720. END_OF_FILE
  721.   if test 2785 -ne `wc -c <'man/rcsdiff.1'`; then
  722.     echo shar: \"'man/rcsdiff.1'\" unpacked with wrong size!
  723.   fi
  724.   # end of 'man/rcsdiff.1'
  725. fi
  726. if test -f 'man/rcsfile.5' -a "${1}" != "-c" ; then 
  727.   echo shar: Will not clobber existing file \"'man/rcsfile.5'\"
  728. else
  729.   echo shar: Extracting \"'man/rcsfile.5'\" \(6200 characters\)
  730.   sed "s/^X//" >'man/rcsfile.5' <<'END_OF_FILE'
  731. X.de Id
  732. X.ds Rv \\$3
  733. X.ds Dt \\$4
  734. X..
  735. X.Id $Id: rcsfile.5,v 5.0 1990/08/22 09:09:36 eggert Exp $
  736. X.ds r \s-1RCS\s0
  737. X.if n .ds - \%--
  738. X.if t .ds - \(em
  739. X.TH RCSFILE 5 \*(Dt GNU
  740. X.SH NAME
  741. Xrcsfile \- format of RCS file
  742. X.SH DESCRIPTION
  743. XAn \*r file's
  744. Xcontents are described by the grammar
  745. Xbelow.  The text is free format: space, backspace, tab, newline, vertical
  746. Xtab, form feed, and carriage return (collectively,
  747. X.IR "white space")
  748. Xhave no significance except in strings.
  749. XStrings are enclosed by
  750. X.BR @ .
  751. XIf a string contains a
  752. X.BR @ ,
  753. Xit must be doubled;
  754. Xotherwise, strings may contain arbitrary binary data.
  755. X.PP
  756. XThe meta syntax uses the following conventions: `|' (bar) separates
  757. Xalternatives; `{' and `}' enclose optional phrases; `{' and `}*' enclose
  758. Xphrases that may be repeated zero or more times;
  759. X`{' and '}+' enclose phrases that must appear at least once and may be
  760. Xrepeated;
  761. XTerminal symbols are in
  762. X.BR boldface ;
  763. Xnonterminal symbols are in
  764. X.IR italics .
  765. X.LP
  766. X.nr x \w'\f3branches\fP'
  767. X.nr y \w'{ \f3comment\fP'
  768. X.if \nx<\ny .nr x \ny
  769. X.nr y \w'\f3{ branch\fP'
  770. X.if \nx<\ny .nr x \ny
  771. X.ta \w'\f2deltatext\fP  'u +\w'::=  'u +\nxu+\w'  'u
  772. X.fc ~
  773. X.nf
  774. X\f2rcstext\fP    ::=    \f2admin\fP {\f2delta\fP}* \f2desc\fP {\f2deltatext\fP}*
  775. X.LP
  776. X\f2admin\fP    ::=    \f3head\fP    {\f2num\fP}\f3;\fP
  777. X        { \f3branch\fP    {\f2num\fP}\f3;\fP }
  778. X        \f3access\fP    {\f2id\fP}*\f3;\fP
  779. X        \f3symbols\fP    {\f2id\fP \f3:\fP \f2num\fP}*\f3;\fP
  780. X        \f3locks\fP    {\f2id\fP \f3:\fP \f2num\fP}*\f3;\fP  {\f3strict  ;\fP}
  781. X        { \f3comment\fP    {\f2string\fP}\f3;\fP }
  782. X        { \f3expand\fP    {\f2string\fP}\f3;\fP }
  783. X        { \f2newphrase\fP }*
  784. X.LP
  785. X\f2delta\fP    ::=    \f2num\fP
  786. X        \f3date\fP    \f2num\fP\f3;\fP
  787. X        \f3author\fP    \f2id\fP\f3;\fP
  788. X        \f3state\fP    {\f2id\fP}\f3;\fP
  789. X        \f3branches\fP    {\f2num\fP}*\f3;\fP
  790. X        \f3next\fP    {\f2num\fP}\f3;\fP
  791. X        { \f2newphrase\fP }*
  792. X.LP
  793. X\f2desc\fP    ::=    \f3desc\fP    \f2string\fP
  794. X.LP
  795. X\f2deltatext\fP    ::=    \f2num\fP
  796. X        \f3log\fP    \f2string\fP
  797. X        { \f2newphrase\fP }*
  798. X        \f3text\fP    \f2string\fP
  799. X.LP
  800. X\f2num\fP    ::=    {\f2digit\fP{\f3.\fP}}+
  801. X.LP
  802. X\f2digit\fP    ::=    \f30\fP | \f31\fP | .\|.\|. | \f39\fP
  803. X.LP
  804. X\f2id\fP    ::=    \f2letter\fP{\f2idchar\fP}*
  805. X.LP
  806. X\f2letter\fP    ::=    any letter
  807. X.LP
  808. X\f2idchar\fP    ::=    any visible graphic character except \f2special\fP
  809. X.LP
  810. X\f2special\fP    ::=    \f3$\fP | \f3,\fP | \f3.\fP | \f3:\fP | \f3;\fP | \f3@\fP
  811. X.LP
  812. X\f2string\fP    ::=    \f3@\fP{any character, with \f3@\fP doubled}*\f3@\fP
  813. X.LP
  814. X\f2newphrase\fP    ::=    \f2id\fP \f2word\fP* \f3;\fP
  815. X.LP
  816. X\f2word\fP    ::=    \f2id\fP | \f2num\fP | \f2string\fP | \f3:\fP
  817. X.fi
  818. X.PP
  819. XIdentifiers are case sensitive.  Keywords are in lower case only.
  820. XThe sets of keywords and identifiers may overlap.
  821. XIn most environments RCS uses the ISO 8859/1 encoding:
  822. Xletters are octal codes 101\-132, 141\-172, 300\-326, 330\-366 and 370-377,
  823. Xvisible graphic characters are codes 041\-176 and 240\-377,
  824. Xand white space characters are codes 010\-015 and 040.
  825. X.PP
  826. XThe
  827. X.I newphrase
  828. Xproductions in the grammar are reserved for future extensions
  829. Xto the format of \*r files.
  830. XNo
  831. X.I newphrase
  832. Xwill begin with any keyword already in use.
  833. X.PP
  834. XThe
  835. X.I delta
  836. Xnodes form a tree.  All nodes whose numbers
  837. Xconsist of a single pair
  838. X(e.g., 2.3, 2.1, 1.3, etc.)
  839. Xare on the trunk, and are linked through the
  840. X.B next
  841. Xfield in order of decreasing numbers.
  842. XThe
  843. X.B head
  844. Xfield in the
  845. X.I admin
  846. Xnode points to the head of that sequence (i.e., contains
  847. Xthe highest pair).
  848. XThe
  849. X.B branch
  850. Xnode in the admin node indicates the default
  851. Xbranch (or revision) for most \*r operations.
  852. XIf empty, the default
  853. Xbranch is the highest branch on the trunk.
  854. X.PP
  855. XAll
  856. X.I delta
  857. Xnodes whose numbers consist of
  858. X.RI 2 n
  859. Xfields
  860. X.RI ( n \(\fP=2)
  861. X(e.g., 3.1.1.1, 2.1.2.2, etc.)
  862. Xare linked as follows.
  863. XAll nodes whose first
  864. X.RI 2 n \-1
  865. Xnumber fields are identical are linked through the
  866. X.B next
  867. Xfield in order of increasing numbers.
  868. XFor each such sequence,
  869. Xthe
  870. X.I delta
  871. Xnode whose number is identical to the first
  872. X.RI 2 n \-2
  873. Xnumber fields of the deltas on that sequence is called the branchpoint.
  874. XThe
  875. X.B branches
  876. Xfield of a node contains a list of the
  877. Xnumbers of the first nodes of all sequences for which it is a branchpoint.
  878. XThis list is ordered in increasing numbers.
  879. X.LP
  880. X.nf
  881. X.vs 12
  882. X.ne 38
  883. XExample:
  884. X.if t .in +0.5i
  885. X.cs 1 20
  886. X.eo
  887. X
  888. X                           Head
  889. X                             |
  890. X                             |
  891. X                             v                        / \
  892. X                         ---------                   /   \
  893. X   / \          / \      |       |      / \         /     \
  894. X  /   \        /   \     |  2.1  |     /   \       /       \
  895. X /     \      /     \    |       |    /     \     /         \
  896. X/1.2.1.3\    /1.3.1.1\   |       |   /1.2.2.2\   /1.2.2.1.1.1\
  897. X---------    ---------   ---------   ---------   -------------
  898. X    ^            ^           |           ^             ^
  899. X    |            |           |           |             |
  900. X    |            |           v           |             |
  901. X   / \           |       ---------      / \            |
  902. X  /   \          |       \  1.3  /     /   \           |
  903. X /     \         ---------\     /     /     \-----------
  904. X/1.2.1.1\                  \   /     /1.2.2.1\
  905. X---------                   \ /      ---------
  906. X    ^                        |           ^
  907. X    |                        |           |
  908. X    |                        v           |
  909. X    |                    ---------       |
  910. X    |                    \  1.2  /       |
  911. X    ----------------------\     /---------
  912. X                           \   /
  913. X                            \ /
  914. X                             |
  915. X                             |
  916. X                             v
  917. X                         ---------
  918. X                         \  1.1  /
  919. X                          \     /
  920. X                           \   /
  921. X                            \ /
  922. X
  923. X.ec
  924. X.if t .in
  925. X.cs 1
  926. X.ce
  927. XFig. 1: A revision tree
  928. X.vs
  929. X.fi
  930. X.PP
  931. X.SH IDENTIFICATION
  932. X.de VL
  933. X\\$2
  934. X..
  935. XAuthor: Walter F. Tichy,
  936. XPurdue University, West Lafayette, IN, 47907.
  937. X.br
  938. XRevision Number: \*(Rv; Release Date: \*(Dt.
  939. X.br
  940. XCopyright \(co 1982, 1988, 1989 by Walter F. Tichy.
  941. X.br
  942. XCopyright \(co 1990 by Paul Eggert.
  943. X.SH SEE ALSO
  944. Xci(1), co(1), ident(1), rcs(1), rcsdiff(1), rcsmerge(1), rlog(1),
  945. X.br
  946. XWalter F. Tichy,
  947. X\*r\*-A System for Version Control,
  948. X.I "Software\*-Practice & Experience"
  949. X.BR 15 ,
  950. X7 (July 1985), 637-654.
  951. END_OF_FILE
  952.   if test 6200 -ne `wc -c <'man/rcsfile.5'`; then
  953.     echo shar: \"'man/rcsfile.5'\" unpacked with wrong size!
  954.   fi
  955.   # end of 'man/rcsfile.5'
  956. fi
  957. if test -f 'man/rcsmerge.1' -a "${1}" != "-c" ; then 
  958.   echo shar: Will not clobber existing file \"'man/rcsmerge.1'\"
  959. else
  960.   echo shar: Extracting \"'man/rcsmerge.1'\" \(3141 characters\)
  961.   sed "s/^X//" >'man/rcsmerge.1' <<'END_OF_FILE'
  962. X.de Id
  963. X.ds Rv \\$3
  964. X.ds Dt \\$4
  965. X..
  966. X.Id $Id: rcsmerge.1,v 5.1 1990/08/29 07:13:01 eggert Exp $
  967. X.ds r \s-1RCS\s0
  968. X.if n .ds - \%--
  969. X.if t .ds - \(em
  970. X.TH RCSMERGE 1 \*(Dt GNU
  971. X.SH NAME
  972. Xrcsmerge \- merge RCS revisions
  973. X.SH SYNOPSIS
  974. X.B rcsmerge
  975. X.RI [ options ] " file"
  976. X.SH DESCRIPTION
  977. X.B rcsmerge
  978. Xincorporates the changes between two revisions
  979. Xof an \*r file into the corresponding working file.
  980. X.PP
  981. XA file name ending in
  982. X.B ,v
  983. Xis an \*r file name, otherwise a
  984. Xworking file name.
  985. X.B rcsmerge
  986. Xderives the working file name from the \*r
  987. Xfile name and vice versa, as explained in
  988. X.BR co (1).
  989. XA pair consisting
  990. Xof both an \*r and a working file name may also be specified.
  991. X.PP
  992. XAt least one revision must be specified with one of the options
  993. Xdescribed below, usually
  994. X.BR \-r .
  995. XAt most two revisions may be specified.
  996. XIf only one revision is specified, the latest
  997. Xis omitted, the latest
  998. Xrevision on the default branch (normally the highest branch on the trunk)
  999. Xis assumed for the second revision.
  1000. XRevisions may be specified numerically or symbolically.
  1001. X.PP
  1002. X.B rcsmerge
  1003. Xprints a warning if there are overlaps, and delimits
  1004. Xthe overlapping regions as explained in
  1005. X.BR "co\ \-j".
  1006. XThe command is useful for incorporating changes into a checked-out revision.
  1007. X.SH OPTIONS
  1008. X.TP
  1009. X.BI \-k subst
  1010. XUse
  1011. X.I subst
  1012. Xstyle keyword substitution.
  1013. XSee
  1014. X.BR co (1)
  1015. Xfor details.
  1016. XFor example,
  1017. X.B "\-kk\ \-r1.1\ \-r1.2"
  1018. Xignores differences in keyword values when merging the changes from
  1019. X.B 1.1
  1020. Xto
  1021. X.BR 1.2 .
  1022. X.TP
  1023. X.BR \-p [\f2rev\fP]
  1024. XSend the result to standard output instead of overwriting the working file.
  1025. X.TP
  1026. X.BR \-q [\f2rev\fP]
  1027. XRun quietly; do not print diagnostics.
  1028. X.TP
  1029. X.BR \-r [\f2rev\fP]
  1030. XMerge with respect to revision
  1031. X.IR rev .
  1032. X.TP
  1033. X.BI \-V n
  1034. XEmulate \*r version
  1035. X.IR n .
  1036. XSee
  1037. X.BR co (1)
  1038. Xfor details.
  1039. X.SH EXAMPLES
  1040. XSuppose you have released revision 2.8 of
  1041. X.BR f.c .
  1042. XAssume
  1043. Xfurthermore that after you complete an unreleased revision 3.4, you receive
  1044. Xupdates to release 2.8 from someone else.
  1045. XTo combine the updates to 2.8 and your changes between 2.8 and 3.4,
  1046. Xput the updates to 2.8 into file f.c and execute
  1047. X.LP
  1048. X.B "    rcsmerge  \-p  \-r2.8  \-r3.4  f.c  >f.merged.c"
  1049. X.PP
  1050. XThen examine
  1051. X.BR f.merged.c .
  1052. XAlternatively, if you want to save the updates to 2.8 in the \*r file,
  1053. Xcheck them in as revision 2.8.1.1 and execute
  1054. X.BR "co \-j":
  1055. X.LP
  1056. X.B "    ci  \-r2.8.1.1  f.c"
  1057. X.br
  1058. X.B "    co  \-r3.4  \-j2.8:2.8.1.1  f.c"
  1059. X.PP
  1060. XAs another example, the following command undoes the changes
  1061. Xbetween revision 2.4 and 2.8 in your currently checked out revision
  1062. Xin
  1063. X.BR f.c .
  1064. X.LP
  1065. X.B "    rcsmerge  \-r2.8  \-r2.4  f.c"
  1066. X.PP
  1067. XNote the order of the arguments, and that
  1068. X.B f.c
  1069. Xwill be
  1070. Xoverwritten.
  1071. X.SH DIAGNOSTICS
  1072. XExit status is 0 for no overlaps, 1 for some overlaps, 2 for trouble.
  1073. X.SH IDENTIFICATION
  1074. XAuthor: Walter F. Tichy.
  1075. X.br
  1076. XRevision Number: \*(Rv; Release Date: \*(Dt.
  1077. X.br
  1078. XCopyright \(co 1982, 1988, 1989 by Walter F. Tichy.
  1079. X.br
  1080. XCopyright \(co 1990 by Paul Eggert.
  1081. X.SH "SEE ALSO"
  1082. Xci(1), co(1), ident(1), merge(1), rcs(1), rcsdiff(1), rcsintro(1), rlog(1),
  1083. Xrcsfile(5)
  1084. X.br
  1085. XWalter F. Tichy,
  1086. X\*r\*-A System for Version Control,
  1087. X.I "Software\*-Practice & Experience"
  1088. X.BR 15 ,
  1089. X7 (July 1985), 637-654.
  1090. END_OF_FILE
  1091.   if test 3141 -ne `wc -c <'man/rcsmerge.1'`; then
  1092.     echo shar: \"'man/rcsmerge.1'\" unpacked with wrong size!
  1093.   fi
  1094.   # end of 'man/rcsmerge.1'
  1095. fi
  1096. if test -f 'rcs.ms.02' -a "${1}" != "-c" ; then 
  1097.   echo shar: Will not clobber existing file \"'rcs.ms.02'\"
  1098. else
  1099.   echo shar: Extracting \"'rcs.ms.02'\" \(7103 characters\)
  1100.   sed "s/^X//" >'rcs.ms.02' <<'END_OF_FILE'
  1101. Xif that option is missing, it derives the number from the
  1102. Xlock held by the user; if there is no lock and locking is not strict,
  1103. X\fIci\fR increments the number of the latest revision on the trunk.
  1104. XA side branch can only be started by explicitly specifying its
  1105. Xnumber with the \fI\-r\fR option during check-in.
  1106. X.sp 1
  1107. X\fICi\fR also determines
  1108. Xwhether the revision to be checked in is different from the
  1109. Xprevious one, and asks whether to proceed if not.
  1110. XThis facility simplifies check-in operations for large systems,
  1111. Xbecause one need not remember which files were changed.
  1112. X.sp 1
  1113. XThe option \fI\-k\fR searches the checked in file for identification
  1114. Xmarkers containing
  1115. Xthe attributes
  1116. Xrevision number, check-in date, author and state, and assigns these
  1117. Xto the new revision rather than computing them.  This option is
  1118. Xuseful for software distribution: Recipients of distributed software
  1119. Xusing RCS should check in updates with the \fI\-k\fR option.
  1120. XThis convention guarantees that revision numbers, check-in dates,
  1121. Xetc., are the same at all sites.
  1122. X.IP "\fIco\fP \fB\- check out revisions\fP"
  1123. X.sp 0
  1124. X\fICo\fR retrieves revisions according to revision number,
  1125. Xdate, author and state attributes.  It either places the revision
  1126. Xinto the working file, or prints it on the standard output.
  1127. X\fICo\fR always expands the identification markers.
  1128. X.IP "\fIident\fP \fB\- extract identification markers\fP"
  1129. X.sp 0
  1130. X\fIIdent\fR extracts the identification markers expanded by \fIco\fR
  1131. Xfrom any file and prints them.
  1132. X.IP "\fIrcs\fP \fB\- change RCS file attributes\fP"
  1133. X.sp 0
  1134. X\fIRcs\fR is an administrative operation that changes access lists,
  1135. Xlocks, unlocks, breaks locks, toggles the strict-locking feature,
  1136. Xsets state attributes and symbolic revision numbers, changes the
  1137. Xdescription, and deletes revisions.  A revision can
  1138. Xonly be deleted if it is not the fork of a side branch.
  1139. X.IP "\fIrcsclean\fP \fB\- clean working directory\fP"
  1140. X.sp 0
  1141. X.ne 10
  1142. X\fIRcsclean\fR removes working files that were checked out but never changed.*
  1143. X.FS *
  1144. XThe \fIrcsclean\fP and \fIrcsfreeze\fP commands
  1145. Xare optional and are not always installed.
  1146. X.FE
  1147. X.IP "\fIrcsdiff\fP \fB\- compare revisions\fP"
  1148. X.sp 0
  1149. X\fIRcsdiff\fR compares two revisions and prints their
  1150. Xdifference, using the UNIX tool \fIdiff\fR.
  1151. XOne of the revisions compared may be checked out.
  1152. XThis command is useful for finding out about changes.
  1153. X.IP "\fIrcsfreeze\fP \fB\- freeze a configuration\fP"
  1154. X.sp 0
  1155. X\fIRcsfreeze\fR assigns the same symbolic revision number
  1156. Xto a given revision in all RCS files.
  1157. XThis command is useful for accurately recording a configuration.*
  1158. X.IP "\fIrcsmerge\fP \fB\- merge revisions\fP"
  1159. X.sp 0
  1160. X\fIRcsmerge\fR merges two revisions, \fIrev1\fR and \fIrev2\fR,
  1161. Xwith respect to a common ancestor.
  1162. XA 3-way file comparison determines the segments of lines that
  1163. Xare (a) the same in all three revisions, or (b) the same in 2 revisions,
  1164. Xor (c) different in all three.  For all segments of type (b) where
  1165. X\fIrev1\fR is the differing revision,
  1166. Xthe segment in \fIrev1\fR replaces the corresponding segment of \fIrev2\fR.
  1167. XType (c) indicates an overlapping change, is flagged as an error, and requires user
  1168. Xintervention to select the correct alternative.
  1169. X.IP "\fIrlog\fP \fB\- read log messages\fP"
  1170. X.sp 0
  1171. X\fIRlog\fR prints the log messages and other information in an RCS file.
  1172. X.bp
  1173. X.LP
  1174. X.nr VS 12p
  1175. X.vs 12p
  1176. X.]<
  1177. X.ds [F 1
  1178. X.]-
  1179. X.ds [K FELD02
  1180. X.ds [K MakeArticle
  1181. X.ds [A Feldman, Stuart I.
  1182. X.ds [D March 1979
  1183. X.ds [T Make\*-A Program for Maintaining Computer Programs
  1184. X.ds [J Software\*-Practice & Experience
  1185. X.ds [V 9
  1186. X.ds [N 3
  1187. X.ds [P 255-265
  1188. X.nr [P 1
  1189. X.nr [T 0
  1190. X.nr [A 1
  1191. X.nr [O 0
  1192. X.][ 1 journal-article
  1193. X.ds [F 2
  1194. X.]-
  1195. X.ds [K HUNT01
  1196. X.ds [T An Algorithm for Differential File Comparison
  1197. X.ds [A Hunt, James W.
  1198. X.as [A " and McIlroy, M. D.
  1199. X.ds [I Computing Science Technical Report, Bell Laboratories
  1200. X.ds [R 41
  1201. X.ds [D June 1976
  1202. X.nr [T 0
  1203. X.nr [A 1
  1204. X.nr [O 0
  1205. X.][ 4 tech-report
  1206. X.ds [F 3
  1207. X.]-
  1208. X.ds [K SCCS
  1209. X.ds [A Rochkind, Marc J.
  1210. X.ds [D Dec. 1975
  1211. X.ds [T The Source Code Control System
  1212. X.ds [J IEEE Transactions on Software Engineering
  1213. X.ds [V SE-1
  1214. X.ds [N 4
  1215. X.ds [P 364-370
  1216. X.nr [P 1
  1217. X.nr [T 0
  1218. X.nr [A 1
  1219. X.nr [O 0
  1220. X.][ 1 journal-article
  1221. X.ds [F 4
  1222. X.]-
  1223. X.ds [K TICH08
  1224. X.ds [T Design, Implementation, and Evaluation of a Revision Control System
  1225. X.ds [A Tichy, Walter F.
  1226. X.ds [B Proceedings of the 6th International Conference on Software Engineering
  1227. X.ds [I ACM, IEEE, IPS, NBS
  1228. X.ds [D September 1982
  1229. X.ds [P 58-67
  1230. X.nr [P 1
  1231. X.nr [T 0
  1232. X.nr [A 1
  1233. X.nr [O 0
  1234. X.][ 3 article-in-book
  1235. X.ds [F 5
  1236. X.]-
  1237. X.ds [K LEBL01
  1238. X.ds [A Leblang, David B.
  1239. X.as [A " and Chase, Robert P.
  1240. X.ds [T Computer-Aided Software Engineering in a Distributed Workstation Environment
  1241. X.ds [O Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium
  1242. X.as [O " on Practical Software Development Environments.
  1243. X.ds [J SIGPLAN Notices
  1244. X.ds [V 19
  1245. X.ds [N 5
  1246. X.ds [D May 1984
  1247. X.ds [P 104-112
  1248. X.nr [P 1
  1249. X.nr [T 0
  1250. X.nr [A 1
  1251. X.nr [O 0
  1252. X.][ 1 journal-article
  1253. X.ds [F 1
  1254. X.ds [F 3
  1255. X.ds [F 6
  1256. X.]-
  1257. X.ds [K SCCSEval
  1258. X.ds [A Glasser, Alan L.
  1259. X.ds [D Nov. 1978
  1260. X.ds [T The Evolution of a Source Code Control System
  1261. X.ds [J Software Engineering Notes
  1262. X.ds [V 3
  1263. X.ds [N 5
  1264. X.ds [P 122-125
  1265. X.nr [P 1
  1266. X.ds [O Proceedings of the Software Quality and Assurance Workshop.
  1267. X.nr [T 0
  1268. X.nr [A 1
  1269. X.nr [O 1
  1270. X.][ 1 journal-article
  1271. X.ds [F 5
  1272. X.ds [F 7
  1273. X.]-
  1274. X.ds [K IBMClearCaster
  1275. X.ds [A Brown, H.B.
  1276. X.ds [D 1970
  1277. X.ds [T The Clear/Caster System
  1278. X.ds [J Nato Conference on Software Engineering, Rome
  1279. X.nr [T 0
  1280. X.nr [A 1
  1281. X.nr [O 0
  1282. X.][ 1 journal-article
  1283. X.ds [F 3
  1284. X.ds [F 8
  1285. X.]-
  1286. X.ds [K HabermannSDC
  1287. X.ds [A Habermann, A. Nico
  1288. X.ds [D Jan. 1979
  1289. X.ds [T A Software Development Control System
  1290. X.ds [I Technical Report, Carnegie-Mellon University, Department of Computer Science
  1291. X.nr [T 0
  1292. X.nr [A 0
  1293. X.nr [O 0
  1294. X.][ 2 book
  1295. X.ds [F 9
  1296. X.]-
  1297. X.ds [K CMS
  1298. X.ds [A DEC
  1299. X.ds [T Code Management System
  1300. X.ds [I Digital Equipment Corporation
  1301. X.ds [O Document No.\ EA-23134-82
  1302. X.ds [D 1982
  1303. X.nr [T 0
  1304. X.nr [A 0
  1305. X.nr [O 0
  1306. X.][ 2 book
  1307. X.ds [F 10
  1308. X.]-
  1309. X.ds [K LAMP01
  1310. X.ds [A Lampson, Butler W.
  1311. X.as [A " and Schmidt, Eric E.
  1312. X.ds [T Practical Use of a Polymorphic Applicative Language
  1313. X.ds [B Proceedings of the 10th Symposium on Principles of Programming Languages
  1314. X.ds [I ACM
  1315. X.ds [P 237-255
  1316. X.nr [P 1
  1317. X.ds [D January 1983
  1318. X.nr [T 0
  1319. X.nr [A 1
  1320. X.nr [O 0
  1321. X.][ 3 article-in-book
  1322. X.ds [F 5
  1323. X.ds [F 11
  1324. X.]-
  1325. X.ds [K TICH07
  1326. X.ds [T A Data Model for Programming Support Environments and its Application
  1327. X.ds [A Tichy, Walter F.
  1328. X.ds [B Automated Tools for Information System Design and Development
  1329. X.ds [E Hans-Jochen Schneider and Anthony I. Wasserman
  1330. X.ds [C Amsterdam
  1331. X.ds [I North-Holland Publishing Company
  1332. X.ds [D 1982
  1333. X.nr [T 0
  1334. X.nr [A 1
  1335. X.nr [O 0
  1336. X.][ 3 article-in-book
  1337. X.ds [F 4
  1338. X.ds [F 2
  1339. X.ds [F 12
  1340. X.]-
  1341. X.ds [K HECK01
  1342. X.ds [T A Technique for Isolating Differences Between Files
  1343. X.ds [A Heckel, Paul
  1344. X.ds [J Communications of the ACM
  1345. X.ds [D April 1978
  1346. X.ds [V 21
  1347. X.ds [N 4
  1348. X.ds [P 264-268
  1349. X.nr [P 1
  1350. X.nr [T 0
  1351. X.nr [A 0
  1352. X.nr [O 0
  1353. X.][ 1 journal-article
  1354. X.ds [F 13
  1355. X.]-
  1356. X.ds [K TICH11
  1357. X.ds [T The String-to-String Correction Problem with Block Moves
  1358. X.ds [A Tichy, Walter F.
  1359. X.ds [D Nov. 1984
  1360. X.ds [J ACM Transactions on Computer Systems
  1361. X.ds [V 2
  1362. X.ds [N 4
  1363. X.ds [P 309-321
  1364. X.nr [P 1
  1365. X.nr [T 0
  1366. X.nr [A 1
  1367. X.nr [O 0
  1368. X.][ 1 journal-article
  1369. X.]>
  1370. END_OF_FILE
  1371.   if test 7103 -ne `wc -c <'rcs.ms.02'`; then
  1372.     echo shar: \"'rcs.ms.02'\" unpacked with wrong size!
  1373.   fi
  1374.   # end of 'rcs.ms.02'
  1375. fi
  1376. if test -f 'src/conf.heg' -a "${1}" != "-c" ; then 
  1377.   echo shar: Will not clobber existing file \"'src/conf.heg'\"
  1378. else
  1379.   echo shar: Extracting \"'src/conf.heg'\" \(4342 characters\)
  1380.   sed "s/^X//" >'src/conf.heg' <<'END_OF_FILE'
  1381. X/* example RCS compile-time configuration */
  1382. X
  1383. X    /* $Id: conf.heg,v 1.1 1990/11/01 05:03:27 eggert Exp $ */
  1384. X
  1385. X/*
  1386. X * This is an example RCS compile-time configuration.
  1387. X * If you can't get conf.sh to work as described in the Makefile,
  1388. X * copy this file to conf.h and edit conf.h by hand.
  1389. X */
  1390. X
  1391. X#define exitmain(n) return n /* how to exit from main() */
  1392. X#if !MAKEDEPEND
  1393. X#    include <stdio.h>
  1394. X#    include <sys/types.h>
  1395. X#    include <sys/stat.h>
  1396. X#    include <fcntl.h>
  1397. X#    include <limits.h>
  1398. X#    include <stdlib.h>
  1399. X#    include <string.h>
  1400. X#    include <unistd.h>
  1401. X    /* #include <vfork.h> does not work.  */
  1402. X#endif /* !MAKEDEPEND */
  1403. X#define has_sys_dir_h 0 /* Does #include <sys/dir.h> work?  */
  1404. X#define has_sys_param_h 0 /* Does #include <sys/param.h> work?  */
  1405. X#define has_sys_wait_h 1 /* Does #include <sys/wait.h> work?  */
  1406. X/* #define const */ /* The 'const' keyword works.  */
  1407. X/* #define volatile */ /* The 'volatile' keyword works.  */
  1408. X/* typedef int gid_t; */ /* Standard headers define gid_t.  */
  1409. X/* typedef int mode_t; */ /* Standard headers define mode_t.  */
  1410. X/* typedef int pid_t; */ /* Standard headers define pid_t.  */
  1411. X/* typedef int sig_atomic_t; */ /* Standard headers define sig_atomic_t.  */
  1412. X/* typedef int size_t; */ /* Standard headers define size_t.  */
  1413. X/* typedef long time_t; */ /* Standard headers define time_t.  */
  1414. X/* typedef int uid_t; */ /* Standard headers define uid_t.  */
  1415. X#define has_prototypes 1 /* Do function prototypes work?  */
  1416. X#if has_prototypes
  1417. X#    define P(params) params
  1418. X#    if !MAKEDEPEND
  1419. X#        include <stdarg.h>
  1420. X#    endif
  1421. X#    define vararg_start(ap,p) va_start(ap,p)
  1422. X#else
  1423. X#    define P(params) ()
  1424. X#    if !MAKEDEPEND
  1425. X#        include <varargs.h>
  1426. X#    endif
  1427. X#    define vararg_start(ap,p) va_start(ap)
  1428. X#endif
  1429. X#define has_getuid 1 /* Does getuid() work?  */
  1430. X#define declare_getpwuid struct passwd *getpwuid P((uid_t));
  1431. X#define has_rename 1 /* Does rename() work?  */
  1432. X#define bad_rename 0 /* Does rename(A,B) fail if B exists?  */
  1433. X#define VOID (void) /* 'VOID e;' discards the value of an expression 'e'.  */
  1434. X#define signal_type void /* type returned by signal handlers */
  1435. X#define sig_zaps_handler 0 /* Must a signal handler reinvoke signal()?  */
  1436. X#define has_seteuid 1 /* Does seteuid() obey Posix 1003.1-1990?  */
  1437. X#define has_sigaction 1 /* Does struct sigaction work?  */
  1438. X#define has_sigblock 0 /* Does sigblock() work?  */
  1439. X#define has_sys_siglist 0 /* Does sys_siglist[] work?  */
  1440. X#define exit_type void /* type returned by exit() */
  1441. X#define underscore_exit_type void /* type returned by _exit() */
  1442. Xtypedef size_t fread_type; /* type returned by fread() and fwrite() */
  1443. Xtypedef void *malloc_type; /* type returned by malloc() */
  1444. X#define free_type void /* type returned by free() */
  1445. Xtypedef size_t strlen_type; /* type returned by strlen() */
  1446. X#define has_getcwd 1 /* Does getcwd() work?  */
  1447. X/* #define has_getwd ? */ /* Does getwd() work?  */
  1448. X#define has_vfork 0 /* Does vfork() work?  */
  1449. X#define has_vfprintf 1 /* Does vfprintf() work?  */
  1450. X#define CO "/usr/local/bin/co" /* name of 'co' program */
  1451. X#define COMPAT2 0 /* Are version 2 files supported?  */
  1452. X#define DATEFORM "%.2d.%.2d.%.2d.%.2d.%.2d.%.2d" /* e.g. 01.01.01.01.01.01 */
  1453. X#define DIFF "/bin/diff" /* name of 'diff' program */
  1454. X#define DIFF_FLAGS , "-n" /* Make diff output suitable for RCS.  */
  1455. X#define DIFF_L 0 /* Does diff -L work? */
  1456. X#define EXECRCS execv /* variant of execv() to use on subprograms */
  1457. X#define MERGE "/usr/local/bin/merge" /* name of 'merge' program */
  1458. X#define RCSDIR "RCS/" /* subdirectory for RCS files */
  1459. X#define SLASH '/' /* path name separator */
  1460. X#define TMPDIR "/tmp/" /* default directory for temporary files */
  1461. X#define DIFF_PATH_HARDWIRED 1 /* Is DIFF absolute, not relative?  */
  1462. X#define ROOTPATH(p) ((p)[0]==SLASH)
  1463. X#define RCSSEP ',' /* separator for RCSSUF */
  1464. X#define SENDMAIL "/bin/mail" /* how to send mail */
  1465. X#if 1 /* These agree with <stdio.h>.  */
  1466. X    int fprintf P((FILE*,const char*,...));
  1467. X    int printf P((const char*,...));
  1468. X#    if has_vfprintf
  1469. X        int vfprintf P((FILE*,const char*,...));
  1470. X#    else
  1471. X        void _doprnt P((const char*,...));
  1472. X#    endif
  1473. X#endif
  1474. Xchar *sprintf P((char*,const char*,...));
  1475. Xint chmod P((const char*,mode_t));
  1476. Xint fcntl P((int,int,...));
  1477. Xint open P((const char*,int,...));
  1478. Xmode_t umask P((mode_t));
  1479. Xpid_t wait P((int*));
  1480. X#ifndef O_CREAT
  1481. X    int creat P((const char*,mode_t));
  1482. X#endif
  1483. X#if has_seteuid
  1484. X    int setegid P((gid_t));
  1485. X    int seteuid P((uid_t));
  1486. X#endif
  1487. END_OF_FILE
  1488.   if test 4342 -ne `wc -c <'src/conf.heg'`; then
  1489.     echo shar: \"'src/conf.heg'\" unpacked with wrong size!
  1490.   fi
  1491.   # end of 'src/conf.heg'
  1492. fi
  1493. if test -f 'src/ident.c' -a "${1}" != "-c" ; then 
  1494.   echo shar: Will not clobber existing file \"'src/ident.c'\"
  1495. else
  1496.   echo shar: Extracting \"'src/ident.c'\" \(4900 characters\)
  1497.   sed "s/^X//" >'src/ident.c' <<'END_OF_FILE'
  1498. X/* Copyright (C) 1982, 1988, 1989 Walter Tichy
  1499. X   Copyright 1990 by Paul Eggert
  1500. X   Distributed under license by the Free Software Foundation, Inc.
  1501. X
  1502. XThis file is part of RCS.
  1503. X
  1504. XRCS is free software; you can redistribute it and/or modify
  1505. Xit under the terms of the GNU General Public License as published by
  1506. Xthe Free Software Foundation; either version 1, or (at your option)
  1507. Xany later version.
  1508. X
  1509. XRCS is distributed in the hope that it will be useful,
  1510. Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
  1511. XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1512. XGNU General Public License for more details.
  1513. X
  1514. XYou should have received a copy of the GNU General Public License
  1515. Xalong with RCS; see the file COPYING.  If not, write to
  1516. Xthe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  1517. X
  1518. XReport problems and direct all questions to:
  1519. X
  1520. X    rcs-bugs@cs.purdue.edu
  1521. X
  1522. X*/
  1523. X
  1524. X/*
  1525. X *                     RCS identification operation
  1526. X */
  1527. X
  1528. X/* $Log: ident.c,v $
  1529. X * Revision 5.0  1990/08/22  08:12:37  eggert
  1530. X * Don't limit output to known keywords.
  1531. X * Remove arbitrary limits and lint.  Ansify and Posixate.
  1532. X *
  1533. X * Revision 4.5  89/05/01  15:11:54  narten
  1534. X * changed copyright header to reflect current distribution rules
  1535. X * 
  1536. X * Revision 4.4  87/10/23  17:09:57  narten
  1537. X * added exit(0) so exit return code would be non random
  1538. X * 
  1539. X * Revision 4.3  87/10/18  10:23:55  narten
  1540. X * Updating version numbers. Changes relative to 1.1 are actually relative
  1541. X * to 4.1
  1542. X * 
  1543. X * Revision 1.3  87/07/09  09:20:52  trinkle
  1544. X * Added check to make sure there is at least one arg before comparing argv[1]
  1545. X * with "-q".  This necessary on machines that don't allow dereferncing null
  1546. X * pointers (i.e. Suns).
  1547. X * 
  1548. X * Revision 1.2  87/03/27  14:21:47  jenkins
  1549. X * Port to suns
  1550. X * 
  1551. X * Revision 4.1  83/05/10  16:31:02  wft
  1552. X * Added option -q and input from reading stdin.
  1553. X * Marker matching is now done with trymatch() (independent of keywords).
  1554. X * 
  1555. X * Revision 3.4  83/02/18  17:37:49  wft
  1556. X * removed printing of new line after last file.
  1557. X *
  1558. X * Revision 3.3  82/12/04  12:48:55  wft
  1559. X * Added LOCKER.
  1560. X *
  1561. X * Revision 3.2  82/11/28  18:24:17  wft
  1562. X * removed Suffix; added ungetc to avoid skipping over trailing KDELIM.
  1563. X *
  1564. X * Revision 3.1  82/10/13  15:58:51  wft
  1565. X * fixed type of variables receiving from getc() (char-->int).
  1566. X*/
  1567. X
  1568. X#include  "rcsbase.h"
  1569. X
  1570. Xstatic int match P((FILE*));
  1571. Xstatic int scanfile P((FILE*));
  1572. X
  1573. XmainProg(identId, "ident", "$Id: ident.c,v 5.0 1990/08/22 08:12:37 eggert Exp $")
  1574. X/*  Ident searches the named files for all occurrences
  1575. X *  of the pattern $keyword:...$, where the keywords are
  1576. X *  Author, Date, Header, Id, Log, RCSfile, Revision, Source, and State.
  1577. X */
  1578. X
  1579. X{
  1580. X   FILE *fp;
  1581. X   int quiet;
  1582. X   int status = EXIT_SUCCESS;
  1583. X
  1584. X   if ((quiet  =  argc > 1 && strcmp("-q",argv[1])==0)) {
  1585. X        argc--; argv++;
  1586. X   }
  1587. X
  1588. X   if (argc<2) {
  1589. X     if ((scanfile(stdin) == 0) && !quiet)
  1590. X        VOID fprintf(stderr, "%s warning: no id keywords in input\n", cmdid);
  1591. X    exitmain(EXIT_FAILURE);
  1592. X   }
  1593. X
  1594. X   while ( --argc > 0 ) {
  1595. X      if ( (fp = fopen(*++argv, "r") ) == NULL ) {
  1596. X     VOID fprintf(stderr,  "%s error: can't open %s\n", cmdid, *argv);
  1597. X     status = EXIT_FAILURE;
  1598. X         continue;
  1599. X      } else {
  1600. X         VOID printf( "%s:\n", *argv);   /*  print file name  */
  1601. X     if ((scanfile(fp) == 0) && !quiet)
  1602. X        VOID fprintf(stderr, "%s warning: no id keywords in %s\n", cmdid, *argv);
  1603. X     if (argc>1) VOID putchar('\n');
  1604. X     VOID fclose(fp);
  1605. X      }
  1606. X   }
  1607. X   exitmain(status);
  1608. X}
  1609. X
  1610. X#if lint
  1611. X#    define exiterr identExit
  1612. X#endif
  1613. X    exiting void
  1614. Xexiterr()
  1615. X{
  1616. X    _exit(EXIT_FAILURE);
  1617. X}
  1618. X
  1619. X
  1620. X    static int
  1621. Xscanfile(file)
  1622. X    register FILE *file;
  1623. X/* Function: scan an open file with descriptor file for keywords.
  1624. X * Returns nonzero if a match is found.
  1625. X */
  1626. X{
  1627. X   register int matched;
  1628. X   register int c;
  1629. X
  1630. X
  1631. X   matched = false;
  1632. X   c = 0;
  1633. X   while (c != EOF) {
  1634. X      if (c == KDELIM) {
  1635. X     if ((c = match(file)))
  1636. X        continue;
  1637. X     matched = true;
  1638. X      }
  1639. X      c = getc(file);
  1640. X   }
  1641. X   return matched;
  1642. X}
  1643. X
  1644. X
  1645. X
  1646. X    static int
  1647. Xmatch(fp)   /* group substring between two KDELIM's; then do pattern match */
  1648. X   register FILE *fp;
  1649. X{
  1650. X   char line[BUFSIZ];
  1651. X   register int c;
  1652. X   register char * tp;
  1653. X
  1654. X   tp = line;
  1655. X   while ((c = getc(fp)) != VDELIM)
  1656. X      switch (ctab[c]) {
  1657. X     case LETTER: case Letter:
  1658. X        *tp++ = c;
  1659. X        if (tp < line+sizeof(line)-4)
  1660. X           break;
  1661. X        /* fall into */
  1662. X     default:
  1663. X        return c ? c : '\n'/* anything but 0 or KDELIM or EOF */;
  1664. X      }
  1665. X   *tp++ = c;
  1666. X   if ((c = getc(fp)) != ' ')
  1667. X      return c ? c : '\n';
  1668. X   *tp++ = c;
  1669. X   while( (c = getc(fp)) != KDELIM ) {
  1670. X      switch (ctab[c]) {
  1671. X     default:
  1672. X        *tp++ = c;
  1673. X        if (tp < line+sizeof(line)-2)
  1674. X           break;
  1675. X        /* fall into */
  1676. X     case EOFILE: case NEWLN: case UNKN:
  1677. X        return c ? c : '\n';
  1678. X      }
  1679. X   }
  1680. X   if (tp[-1] != ' ')
  1681. X      return tp[-1];
  1682. X   *tp++ = c;     /*append trailing KDELIM*/
  1683. X   *tp   = '\0';
  1684. X   VOID fprintf(stdout, "     %c%s\n", KDELIM, line);
  1685. X   return 0;
  1686. X}
  1687. END_OF_FILE
  1688.   if test 4900 -ne `wc -c <'src/ident.c'`; then
  1689.     echo shar: \"'src/ident.c'\" unpacked with wrong size!
  1690.   fi
  1691.   # end of 'src/ident.c'
  1692. fi
  1693. if test -f 'src/merge.sh' -a "${1}" != "-c" ; then 
  1694.   echo shar: Will not clobber existing file \"'src/merge.sh'\"
  1695. else
  1696.   echo shar: Extracting \"'src/merge.sh'\" \(2057 characters\)
  1697.   sed "s/^X//" >'src/merge.sh' <<'END_OF_FILE'
  1698. X: 'Output the merge command as a shell file.'
  1699. X
  1700. XId='$Id: merge.sh,v 5.3 1990/11/01 05:03:32 eggert Exp $'
  1701. X
  1702. Xcat >a.sh <<'EOF' && chmod +x a.sh || exit
  1703. X#!/bin/sh
  1704. Xexport something
  1705. XEOF
  1706. Xif
  1707. X    (
  1708. X        ./a.sh &&
  1709. X        if csh -c :
  1710. X        then csh -c ./a.sh
  1711. X        else :
  1712. X        fi
  1713. X    ) 2>/dev/null
  1714. Xthen
  1715. X    echo '#!/bin/sh'
  1716. X    echo '# merge - three-way file merge'
  1717. X    echo "#    $Id"
  1718. Xelse
  1719. X    echo ': merge - three-way file merge'
  1720. X    echo ": '$Id'"
  1721. Xfi
  1722. Xrm -f a.sh
  1723. X
  1724. Xcat <<EOF
  1725. X
  1726. XDIFF=${DIFF?}
  1727. XDIFF3=${DIFF3?}
  1728. XEOF
  1729. X
  1730. Xcat <<'EOF'
  1731. XPATH=/bin:/usr/bin
  1732. Xlabels=0 p=w say=echo
  1733. Xwhile
  1734. X    case $1 in
  1735. X    -p)
  1736. X        p='1,$p';;
  1737. X    -q)
  1738. X        say=:;;
  1739. X    -L)
  1740. X        case $labels in
  1741. X        0) l1=$2 labels=1;;
  1742. X        1) l3=$2 labels=2;;
  1743. X        *) echo "merge: too many -L options"; exit 2
  1744. X        esac
  1745. X        case $# in
  1746. X        1) ;;
  1747. X        *) shift
  1748. X        esac;;
  1749. X    -*)
  1750. X        echo "merge: $1: unknown option"; exit 2;;
  1751. X    *)
  1752. X        break
  1753. X    esac
  1754. Xdo shift
  1755. Xdone
  1756. X
  1757. Xcase $# in
  1758. X3) ;;
  1759. X*)
  1760. X    echo >&2 'merge: usage: merge [-p] [-q] [-L label1 [-L label3]] file1 file2 file3'
  1761. X    exit 2
  1762. Xesac
  1763. X
  1764. Xf1=$1 f2=$2 f3=$3
  1765. Xcase $1 in +*) f1=./$1;; esac
  1766. Xcase $2 in +*|-*) f2=./$2;; esac
  1767. Xcase $3 in +*|-*) f3=./$3;; esac
  1768. X
  1769. Xcase $labels in
  1770. X0) l3=$3 l1=$1;;
  1771. X1) l3=$3
  1772. Xesac
  1773. X
  1774. Xcase $p in
  1775. Xw)
  1776. X    if test ! -w "$f1"
  1777. X    then
  1778. X        echo >&2 "merge: $1 not writeable"
  1779. X        exit 2
  1780. X    fi
  1781. Xesac
  1782. X
  1783. Xstatus=2
  1784. Xtemps=
  1785. Xtrap '
  1786. X    case $temps in
  1787. X    ?*) rm -f $temps || status=2
  1788. X    esac
  1789. X    exit $status
  1790. X' 0
  1791. Xtrap exit 1 2 3 13 15
  1792. Xumask 077
  1793. X
  1794. Xt=/tmp/d3t$$
  1795. X
  1796. XEOF
  1797. X
  1798. Xcase ${DIFF3_TYPE?} in
  1799. Xbin) sed 's/^[     ]*//' <<'EOF'
  1800. X    case $p in
  1801. X    w) temps=$t;;
  1802. X    *) t=
  1803. X    esac
  1804. X
  1805. X    $DIFF3 -am -L "$l1" -L "$l3" "$f1" "$f2" "$f3" >$t
  1806. X    s=$?
  1807. X
  1808. X    case $s in
  1809. X    0) ;;
  1810. X    1) $say >&2 "merge: overlaps during merge";;
  1811. X    *) exit
  1812. X    esac
  1813. X
  1814. X    case $p in
  1815. X    w) cp $t "$f1" || s=2
  1816. X    esac
  1817. X
  1818. X    status=$s
  1819. XEOF
  1820. X;;
  1821. X
  1822. X*) sed 's/^[     ]*//' <<'EOF'
  1823. X    temps="/tmp/d3a$$ /tmp/d3b$$ $t"
  1824. X
  1825. X    $DIFF "$f1" "$f3" >/tmp/d3a$$
  1826. X    case $? in
  1827. X    0|1) ;;
  1828. X    *) exit
  1829. X    esac
  1830. X
  1831. X    $DIFF "$f2" "$f3" >/tmp/d3b$$
  1832. X    case $? in
  1833. X    0|1) ;;
  1834. X    *) exit
  1835. X    esac
  1836. X
  1837. X    $DIFF3 -E /tmp/d3a$$ /tmp/d3b$$ "$f1" "$f2" "$f3" "$l1" "$l3" >$t
  1838. X    s=$?
  1839. X
  1840. X    case $s in
  1841. X    0) ;;
  1842. X    *) s=1; $say >&2 "merge: overlaps or other problems during merge"
  1843. X    esac
  1844. X
  1845. X    echo $p >>$t  &&  ed - "$f1" <$t   ||   s=2
  1846. X
  1847. X    status=$s
  1848. XEOF
  1849. Xesac
  1850. END_OF_FILE
  1851.   if test 2057 -ne `wc -c <'src/merge.sh'`; then
  1852.     echo shar: \"'src/merge.sh'\" unpacked with wrong size!
  1853.   fi
  1854.   # end of 'src/merge.sh'
  1855. fi
  1856. if test -f 'src/rcsfreeze.sh' -a "${1}" != "-c" ; then 
  1857.   echo shar: Will not clobber existing file \"'src/rcsfreeze.sh'\"
  1858. else
  1859.   echo shar: Extracting \"'src/rcsfreeze.sh'\" \(3263 characters\)
  1860.   sed "s/^X//" >'src/rcsfreeze.sh' <<'END_OF_FILE'
  1861. X#! /bin/sh
  1862. X
  1863. X# rcsfreeze - assign a symbolic revision number to a configuration of RCS files
  1864. X
  1865. X#    $Id: rcsfreeze.sh,v 4.3 1990/11/01 05:03:45 eggert Exp $
  1866. X
  1867. X#       The idea is to run rcsfreeze each time a new version is checked
  1868. X#       in. A unique symbolic revision number (C_[number], where number
  1869. X#       is increased each time rcsfreeze is run) is then assigned to the most
  1870. X#       recent revision of each RCS file of the main trunk.
  1871. X#
  1872. X#       If the command is invoked with an argument, then this
  1873. X#       argument is used as the symbolic name to freeze a configuration.
  1874. X#       The unique identifier is still generated
  1875. X#       and is listed in the log file but it will not appear as
  1876. X#       part of the symbolic revision name in the actual RCS file.
  1877. X#
  1878. X#       A log message is requested from the user which is saved for future
  1879. X#       references.
  1880. X#
  1881. X#       The shell script works only on all RCS files at one time.
  1882. X#       It is important that all changed files are checked in (there are
  1883. X#       no precautions against any error in this respect).
  1884. X#       file names:
  1885. X#       {RCS/}.rcsfreeze.ver    version number
  1886. X#       {RCS/}.rscfreeze.log    log messages, most recent first
  1887. X
  1888. XPATH=/usr/local/bin:/bin:/usr/bin:/usr/ucb:$PATH
  1889. Xexport PATH
  1890. X
  1891. XDATE=`date` || exit
  1892. X# Check whether we have an RCS subdirectory, so we can have the right
  1893. X# prefix for our paths.
  1894. Xif [ -d RCS ]
  1895. Xthen RCSDIR=RCS/
  1896. Xelse RCSDIR=
  1897. Xfi
  1898. X
  1899. X# Version number stuff, log message file
  1900. XVERSIONFILE=${RCSDIR}.rcsfreeze.ver
  1901. XLOGFILE=${RCSDIR}.rcsfreeze.log
  1902. X# Initialize, rcsfreeze never run before in the current directory
  1903. X[ -r $VERSIONFILE ] || { echo 0 >$VERSIONFILE && >>$LOGFILE; } || exit
  1904. X
  1905. X# Get Version number, increase it, write back to file.
  1906. XVERSIONNUMBER=`cat $VERSIONFILE` &&
  1907. XVERSIONNUMBER=`expr $VERSIONNUMBER + 1` &&
  1908. Xecho $VERSIONNUMBER >$VERSIONFILE || exit
  1909. X
  1910. X# Symbolic Revision Number
  1911. XSYMREV=C_$VERSIONNUMBER
  1912. X# Allow the user to give a meaningful symbolic name to the revision.
  1913. XSYMREVNAME=${1-$SYMREV}
  1914. Xecho >&2 "rcsfreeze: symbolic revision number computed: \"$SYMREV\"
  1915. Xrcsfreeze: symbolic revision number used:     \"$SYMREVNAME\"
  1916. Xrcsfreeze: the two differ only when rcsfreeze invoked with argument
  1917. Xrcsfreeze: give log message, summarizing changes (end with EOF or single '.')" \
  1918. X    || exit
  1919. X
  1920. X# Stamp the logfile. Because we order the logfile the most recent
  1921. X# first we will have to save everything right now in a temporary file.
  1922. XTMPLOG=/tmp/rcsfrz$$
  1923. Xtrap 'rm -f $TMPLOG; exit 1' 1 2 13 15
  1924. X# Now ask for a log message, continously add to the log file
  1925. X(
  1926. X    echo "Version: $SYMREVNAME($SYMREV), Date: $DATE
  1927. X-----------" || exit
  1928. X    while read MESS
  1929. X    do
  1930. X        case $MESS in
  1931. X        .) break
  1932. X        esac
  1933. X        echo "    $MESS" || exit
  1934. X    done
  1935. X    echo "-----------
  1936. X" &&
  1937. X    cat $LOGFILE
  1938. X) >$TMPLOG &&
  1939. X
  1940. X# combine old and new logfiles
  1941. Xcp $TMPLOG $LOGFILE &&
  1942. Xrm -f $TMPLOG || exit
  1943. Xtrap 1 2 13 15
  1944. X
  1945. X# Now the real work begins by assigning a symbolic revision number
  1946. X# to each rcs file. Take the most recent version of the main trunk.
  1947. X
  1948. Xstatus=
  1949. X
  1950. Xfor FILE in ${RCSDIR}*
  1951. Xdo
  1952. X#   get the revision number of the most recent revision
  1953. X    HEAD=`rlog -h $FILE` &&
  1954. X    REV=`echo "$HEAD" | sed -n 's/^head:[     ]*//p'` &&
  1955. X#   assign symbolic name to it.
  1956. X    echo >&2 "rcsfreeze: $REV $FILE" &&
  1957. X    rcs -q -n$SYMREVNAME:$REV $FILE || status=$?
  1958. Xdone
  1959. X
  1960. Xexit $status
  1961. END_OF_FILE
  1962.   if test 3263 -ne `wc -c <'src/rcsfreeze.sh'`; then
  1963.     echo shar: \"'src/rcsfreeze.sh'\" unpacked with wrong size!
  1964.   fi
  1965.   # end of 'src/rcsfreeze.sh'
  1966. fi
  1967. if test -f 'src/rcsmap.c' -a "${1}" != "-c" ; then 
  1968.   echo shar: Will not clobber existing file \"'src/rcsmap.c'\"
  1969. else
  1970.   echo shar: Extracting \"'src/rcsmap.c'\" \(3176 characters\)
  1971.   sed "s/^X//" >'src/rcsmap.c' <<'END_OF_FILE'
  1972. X/* RCS map of character types */
  1973. X
  1974. X/* Copyright (C) 1982, 1988, 1989 Walter Tichy
  1975. X   Copyright 1990 by Paul Eggert
  1976. X   Distributed under license by the Free Software Foundation, Inc.
  1977. X
  1978. XThis file is part of RCS.
  1979. X
  1980. XRCS is free software; you can redistribute it and/or modify
  1981. Xit under the terms of the GNU General Public License as published by
  1982. Xthe Free Software Foundation; either version 1, or (at your option)
  1983. Xany later version.
  1984. X
  1985. XRCS is distributed in the hope that it will be useful,
  1986. Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
  1987. XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1988. XGNU General Public License for more details.
  1989. X
  1990. XYou should have received a copy of the GNU General Public License
  1991. Xalong with RCS; see the file COPYING.  If not, write to
  1992. Xthe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  1993. X
  1994. XReport problems and direct all questions to:
  1995. X
  1996. X    rcs-bugs@cs.purdue.edu
  1997. X
  1998. X*/
  1999. X
  2000. X#include "rcsbase.h"
  2001. X
  2002. XlibId(mapId, "$Id: rcsmap.c,v 5.0 1990/08/22 08:13:14 eggert Exp $")
  2003. X
  2004. X/* map of character types */
  2005. X/* ISO 8859/1 (Latin-1) */
  2006. X/* For best results, this should match diff's opinion of which */
  2007. X/* characters may appear in a text file. */
  2008. Xconst enum tokens map[] = {
  2009. X    EOFILE, /* ctab[-1] */
  2010. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2011. X    SPACE,    SPACE,    NEWLN,    SPACE,    SPACE,    SPACE,    UNKN,    UNKN,
  2012. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2013. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2014. X    SPACE,    IDCHAR,    IDCHAR,    IDCHAR,    DELIM,    IDCHAR,    IDCHAR,    IDCHAR,
  2015. X    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    DELIM,    IDCHAR,    PERIOD,    IDCHAR,
  2016. X    DIGIT,    DIGIT,    DIGIT,    DIGIT,    DIGIT,    DIGIT,    DIGIT,    DIGIT,
  2017. X    DIGIT,    DIGIT,    COLON,    SEMI,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,
  2018. X    SBEGIN,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,
  2019. X    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,
  2020. X    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,
  2021. X    LETTER,    LETTER,    LETTER,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,
  2022. X    IDCHAR,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,
  2023. X    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,
  2024. X    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,
  2025. X    Letter,    Letter,    Letter,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    UNKN,
  2026. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2027. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2028. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2029. X    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,    UNKN,
  2030. X    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,
  2031. X    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,
  2032. X    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,
  2033. X    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,    IDCHAR,
  2034. X    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,
  2035. X    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,
  2036. X    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    IDCHAR,
  2037. X    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    LETTER,    Letter,
  2038. X    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,
  2039. X    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,
  2040. X    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    IDCHAR,
  2041. X    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,    Letter,
  2042. X};
  2043. END_OF_FILE
  2044.   if test 3176 -ne `wc -c <'src/rcsmap.c'`; then
  2045.     echo shar: \"'src/rcsmap.c'\" unpacked with wrong size!
  2046.   fi
  2047.   # end of 'src/rcsmap.c'
  2048. fi
  2049. echo shar: End of archive 11 \(of 12\).
  2050. cp /dev/null ark11isdone
  2051. MISSING=""
  2052. for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
  2053.     if test ! -f ark${I}isdone ; then
  2054.     MISSING="${MISSING} ${I}"
  2055.     fi
  2056. done
  2057. if test "${MISSING}" = "" ; then
  2058.     echo You have unpacked all 12 archives.
  2059.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2060. else
  2061.     echo You still must unpack the following archives:
  2062.     echo "        " ${MISSING}
  2063. fi
  2064. exit 0
  2065. exit 0 # Just in case...
  2066.